package com.yami.shop.mystery.common.dto;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.Serializable;
import java.util.Date;
import java.util.List;

/**
 * 活动dto
 *
 * @author wxf
 * @date 2023/4/12 11:12
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
public class ActivityPresellDto implements Serializable {

    private static final long serialVersionUID = 1L;

    @Schema(description = "主键")
    private Long id;

    @Schema(description = "商品ID")
    private Long spuId;

    @Schema(description = "活动类型 1:预售活动2:专题活动3:盲盒活动")
    private String activityType;

    @Schema(description = "是否支持优先购")
    private Integer isPreemption;

    @Schema(description = "是否支持优惠购")
    private Integer isDiscounts;

    @Schema(description = "优先购开始时间")
    private Date preemptionStartTime;

    @Schema(description = "优先购结束时间")
    private Date preemptionEndTime;

    @Schema(description = "优惠购开始时间")
    private Date discountsStartTime;

    @Schema(description = "优惠购结束时间")
    private Date discountsEndTime;

    @Schema(description = "优先购限购数量")
    private Integer preemptionNum;

    @Schema(description = "优惠购限购数量")
    private Integer discountsNum;

    @Schema(description = "上架时间")
    private Date putawayTime;

    @Schema(description = "优惠购价格(单位分)")
    private Integer preemptionPrice;

    @Schema(description = "是否支持报名")
    private Integer isApply;

    @Schema(description = "报名开始时间")
    private Date applyStartTime;

    @Schema(description = "报名结束时间")
    private Date applyEndTime;

    @Schema(description = "摇奖时间")
    private Date drawTime;

    @Schema(description = "报名人数")
    private Integer applyNum;

    @Schema(description = "注水报名人数")
    private Integer waterApplyNum;

    @Schema(description = "活动名称")
    private String activityName;

    @Schema(description = "活动开始时间")
    private Date activityStartTime;

    @Schema(description = "活动结束时间")
    private Date activityEndTime;

    @Schema(description = "店铺ID")
    private Long shopId;

    @Schema(description = "主图")
    private String image;

    @Schema(description = "展示背景图")
    private String backImg;

    @Schema(description = "作品介绍")
    private String boxRule;

    @Schema(description = "稀有度")
    private Integer levelId;

    @Schema(description = "商品个数")
    private Integer prodNum;

    @Schema(description = "作者")
    private String author;

    @Schema(description = "作者头像")
    private String authorImg;

    @Schema(description = "是否推荐 1 是 0 否")
    private Integer isRecommend;

    @Schema(description = "排序值")
    private Integer recommendNum;

    @Schema(description = "专题活动专用，活动ID")
    private String activityIds;

    @Schema(description = "活动规则，多个用','分割")
    private String activityRule;

    @Schema(description = "权益，多个用','分割")
    private String activityRights;

    @Schema(description = "状态(0:失效、1:正常、2:违规下架、3:等待审核)")
    private Integer status;

    @Schema(description = "活动限购数")
    private Integer purchaseNum;

    @Schema(description = "限购数")
    private Integer maxNum;

    @Schema(description = "规则限购数")
    private Integer ruleMaxNum;

    @Schema(description = "活动创建时间")
    private Date createTime;

    @Schema(description = "优惠购规则，前端页面用")
    private Long discountsRule;

    private Long prodsProdId;

    @Schema(description = "优先购规则，前端页面用")
    private Long preemptionRule;

    @Schema(description = "商品类型(1:商品2:盲盒)")
    private Long blindType;

    @Schema(description = "是否实名(0:否1:是)")
    private Long isReal;

    @Schema(description = "发放方式1:自动发放2:领取发放")
    private String grantType;

    @Schema(description = "活动原始库存")
    private Integer originStocks;

    @Schema(description = "活动剩余总库存")
    private Integer totalStocks;

    @Schema(description = "商品回显")
    private List<ActivityProdDto> prods;

    @Schema(description = "是否开启自动补货(0:否1:是)")
    private Long isAutoReplenish;

    @Schema(description = "单次补货数量")
    private Integer replenishmentQuantity;

    @Schema(description = "自动补货阈值（活动库存到达阈值时自动补货）")
    private Integer replenishmentThreshold;

    @Schema(description = "活动最大补货数量")
    private Integer maxReplenishmentQuantity;


    @Schema(description = "经销商ID")
    private Long shopDealerId;

    @Schema(description = "经销商名称")
    private String shopDealerName;

    @Schema(description = "默认激活证书比例")
    private Integer proportion;
}
